iT邦幫忙

2025 iThome 鐵人賽

DAY 4
0

今日內容:三元運算子、nhanced switch、邏輯運算子、迴圈、methods、overloaded methods、變數範圍(scope)


三元運算子

// (判斷式?成立的敘述:不成立的敘述)

跟之前學過的一模一樣


Enhanced switch

邏輯類似C的switch,用於取代多層的if else,只是case後面不是加 ":" ,而是 "->"
如果有相同的case,也不是像以前一樣換行疊層,而是直接用逗號分隔(比較直觀)

String day = "Monday";

switch(day){
    case "Monday", "Tuesday", "Wednesday", "Thursday",
        "Friday" -> System.out.println("It is a weekday.");
    case "Saturday", "Sunday" -> System.out.println("It is the weekend.");
    default -> System.out.println(day + " is not a day.");
}

邏輯運算子

  • && and
  • || or
  • ! not
    都與學過的邏輯、用法相同

迴圈

一樣分為for與while兩種大項

for

基本的counter based for寫法一樣

for (int i=0; i<10; ++i){
    System.out.println(i);
}
/*
for(1-變數初始化; 2-判斷條件; 4-執行完的迭代){
    3-執行內容;
}
*/

而C++中的range based for在Java中好像叫enhanced for?
不過寫起來也是一樣,只是不像C++有 "auto" 這個變數型態可以用

// 假設有一個存放數值的int array名為nums
for(int num : nums){
    System.out.println(num);
}

while

可以想成if的無限判斷版本,執行直到不符合判斷條件,要注意會不會有無法跳出迴圈的狀況

int num = 15220;
while(num > 500){
    num /= 2;
}

而另一種do while則是必定先跑一次內容,隨後再檢查條件式

do{
    num /= 2;
}while(num > 500);

Methods

一個簡單好理解的說法就是 Method(Java) = function(C++)
這兩個東西的目的都是創建一個可被重複呼叫的功能區塊
不過一樣要記得傳入的內容是 pass by value 還是 pass by reference 這些問題
另外,由於Java的main是static,只能使用static的method,所以在Main Class中宣告時要宣告成static的method才能使用

static int add(int a, int b){
    return a+b;
}

為什麼Java的main是static的?

在程式開始執行時,習慣需要從static的main開始執行內容,而非該Class的constructor
是當初在寫Java的人的慣例(convention),以避免歧異性(ambiguity)


Overloaded methods

如同我對method的理解方式,這個就是overloaded function
對於同名的method,可以創建多個有不同參數的method,使其可以應用於更多場景

static int add(int a, int b){
    return a+b;
}
static int add(int a, int b, int c){
    return a+b+c;
}
static int add(int a, int b, int c, int d){
    return a+b+c+d;
}
// ...

這樣在呼叫method時,系統會自動根據傳入的參數數量,判斷要準確呼叫哪一個method


變數範圍

基本上也是跟C, C++一樣,如果在局部(local)與全域(global)有相同名稱的變數,則會遵循"由內至外"的呼叫方式

public class Main{
    public int x = 5;
    public static void main(String[] args){
        int x = 3;
        System.out.println(x);
    }
}
// 輸出結果會是 3

結語

今天是學習Java基本語法的第三天,感覺今天遇到的仍然是熟悉的內容,只是有些用法(例如switch由 ":" 改成 "->")會需要特別記憶並調整,其他的話都還是很熟悉的內容。
今天也是快樂學習的一天,明天繼續!/images/emoticon/emoticon12.gif


上一篇
Day 3:Java基本語法(二)
下一篇
Day 5:Java基本語法(四)
系列文
30天從基礎學起Java,直到做出我的第一個遊戲21
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言